module test.test;

import ruby.c.ruby;
import std.string;
import std.stdio;

extern(C){

VALUE t_init(VALUE self)
{
  VALUE arr = rb_ary_new();
  rb_iv_set(self, "@arr", arr);
  return self;
}

VALUE t_add(VALUE self, VALUE anObject)
{
  VALUE arr = rb_iv_get(self, "@arr");
  rb_ary_push(arr, anObject);
  return arr;
}

} // extern(C)

extern(C){

VALUE cTest;

alias VALUE(*func_type)();

export void Init_Test()
{
  cTest = rb_define_class("Test", rb_cObject);
  rb_define_method(cTest, "initialize", cast(func_type)&t_init, 0);
  rb_define_method(cTest, "add", cast(func_type)&t_add, 1);
}

}  // extern(C)


